/*
 *si pensamos como funcionan los numeros romanos vamos a encontrar un patrón 
 * de 1 a 3 es el mismo signo I (ocupa 1 espacio por vez)
 * el 4 es una combinacion del 5 con el 1.... 
 * IV (ocupan dos lugares), el 5 es V (ocupa 1 lugar)
 * y el próximo signo que hace combinación es el 9 (IX)
 * que utiliza un signo de una escala mayor.
 * EN ESTE EJEMPLO LLEGA HASTA MIL
 */
package Behavioral.Interpreter;

/**
 *
 * @author Demoni
 */
public abstract class Expression {
    public abstract String one();
    public abstract String four();
    public abstract String five();
    public abstract String nine();
    public abstract int multiplier();
    
    public void interpret (Context context){
        if(context.input.startsWith(nine()))
        {
            context.output += (9 * multiplier());
            context.input = context.input.substring(2);
        }
        else{ 
            if (context.input.startsWith(four())){
            context.output += (4 * multiplier());
            context.input = context.input.substring(2);
            }
            else {
                if (context.input.startsWith(five())){
                context.output += (5 * multiplier());
                context.input = context.input.substring(1);
                }
                else {
                    while (context.input.startsWith(one())){
                        context.output +=(1 * multiplier());
                        context.input= context.input.substring(1);
                    }           
                }
           }
        }
    }
    
    
    
}
